#!/usr/bin/python3

# This program is a demo of the CLItheme frontend API for applications. Apply a theme definition file in the folder "demo-clithemedef" to see it in action.
# 这个程序展示了CLItheme的应用程序frontend API。请应用一个在"demo-clithemedef"文件夹中的任意一个主题定义文件以观察它的效果。

import os
import sys
from src.clitheme import frontend

demo_message="""正在展示{}演示（不会修改系统上的文件）："""

help_usage=\
"""
{0} install-files
{0} install-file [FILE]
{0} --help
{0} --clitheme-output-defs
"""

outputdefs_string=\
"""
com.example example-app found-file
在当前目录找到了{}个文件

com.example example-app installing-file
-> 正在安装 "{}"...

com.example example-app install-success
已成功安装{}个文件

com.example example-app install-success-file
已成功安装"{}"

com.example example-app file-not-found
错误：找不到文件"{}"

com.example example-app format-error
错误：命令语法不正确

com.example example-app directory-empty
错误：当前目录里没有任何文件

com.example example-app helpmessage description-general
文件安装程序样例（不会修改系统中的文件）

com.example example-app helpmessage description-usageprompt
使用方法：

com.example example-app helpmessage unknown-command
错误：未知命令"{}"
"""

frontend.set_domain("com.example")
frontend.set_appname("example-app")
f=frontend.FetchDescriptor()

if len(sys.argv)>1 and sys.argv[1]=="install-files":
    if len(sys.argv)!=2:
        print(f.retrieve_entry_or_fallback("format-error", "错误：命令语法不正确"))
        exit(1)
    print(demo_message.format(sys.argv[1]))
    dirfiles=os.listdir()
    if len(dirfiles)==0:
        print(f.retrieve_entry_or_fallback("directory-empty","错误：当前目录里没有任何文件"))
    print(f.retrieve_entry_or_fallback("found-file", "在当前目录找到了{}个文件").format(str(len(dirfiles))))
    for item in dirfiles:
        print(f.retrieve_entry_or_fallback("installing-file", "-> 正在安装 \"{}\"...").format(item))
    print(f.retrieve_entry_or_fallback("install-success","已成功安装{}个文件").format(str(len(dirfiles))))
elif len(sys.argv)>1 and sys.argv[1]=="install-file":
    if len(sys.argv)!=3:
        print(f.retrieve_entry_or_fallback("format-error", "错误：命令语法不正确"))
        exit(1)
    print(demo_message.format(sys.argv[1]))
    item=sys.argv[2].strip()
    if os.path.exists(item):
        print(f.retrieve_entry_or_fallback("installing-file", "-> 正在安装 \"{}\"...").format(item))
        print(f.retrieve_entry_or_fallback("install-success-file","已成功安装\"{}\"").format(item))
    else:
        print(f.retrieve_entry_or_fallback("file-not-found","错误：找不到文件\"{}\"").format(item))
        exit(1)
elif len(sys.argv)>1 and sys.argv[1]=="--clitheme-output-defs":
    print(outputdefs_string)
else:
    f2=frontend.FetchDescriptor(subsections="helpmessage")
    print(f2.retrieve_entry_or_fallback("description-general","文件安装程序样例（不会修改系统中的文件）"))
    print(f2.retrieve_entry_or_fallback("description-usageprompt","使用方法："))
    print(help_usage.format(sys.argv[0]))
    if len(sys.argv)>1 and sys.argv[1]=="--help":
        exit(0)
    elif len(sys.argv)>1:
        print(f2.retrieve_entry_or_fallback("unknown-command","错误：未知命令\"{}\"").format(sys.argv[1]))
    exit(1)